/*
 * Foundation Responsive Library
 * http://foundation.zurb.com
 * Copyright 2013, ZURB
 * Free to use under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */

/*jslint unparam: true, browser: true, indent: 2 */


(function () {
    // add dusty browser stuff
    if (!Array.prototype.filter) {
        Array.prototype.filter = function (fun /*, thisp */) {
            "use strict";

            if (this == null) {
                throw new TypeError();
            }

            var t = Object(this),
                len = t.length >>> 0;
            if (typeof fun != "function") {
                try {
                    throw new TypeError();
                } catch (e) {
                    return;
                }
            }

            var res = [],
                thisp = arguments[1];
            for (var i = 0; i < len; i++) {
                if (i in t) {
                    var val = t[i]; // in case fun mutates this
                    if (fun && fun.call(thisp, val, i, t)) {
                        res.push(val);
                    }
                }
            }

            return res;
        };

        if (!Function.prototype.bind) {
            Function.prototype.bind = function (oThis) {
                if (typeof this !== "function") {
                    // closest thing possible to the ECMAScript 5 internal IsCallable function
                    throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
                }

                var aArgs = Array.prototype.slice.call(arguments, 1),
                    fToBind = this,
                    fNOP = function () {
                    },
                    fBound = function () {
                        return fToBind.apply(this instanceof fNOP && oThis
                                ? this
                                : oThis,
                            aArgs.concat(Array.prototype.slice.call(arguments)));
                    };

                fNOP.prototype = this.prototype;
                fBound.prototype = new fNOP();

                return fBound;
            };
        }
    }

    // fake stop() for zepto.
    $.fn.stop = $.fn.stop || function () {
            return this;
        };
}());

;
(function (window, document, undefined) {
    'use strict';

    window.Foundation = {
        name: 'Foundation',

        version: '4.0.0',

        // global Foundation cache object
        cache: {},

        init: function (scope, libraries, method, options, response, /* internal */ nc) {
            var library_arr,
                args = [scope, method, options, response],
                responses = [],
                nc = nc || false;

            // disable library error catching,
            // used for development only
            if (nc) this.nc = nc;

            // set foundation global scope
            this.scope = scope || this.scope;

            if (libraries && typeof libraries === 'string') {
                if (/off/i.test(libraries)) return this.off();

                library_arr = libraries.split(' ');

                if (library_arr.length > 0) {
                    for (var i = library_arr.length - 1; i >= 0; i--) {
                        responses.push(this.init_lib(library_arr[i], args));
                    }
                }
            } else {
                for (var lib in this.libs) {
                    responses.push(this.init_lib(lib, args));
                }
            }

            // if first argument is callback, add to args
            if (typeof libraries === 'function') {
                args.unshift(libraries);
            }

            return this.response_obj(responses, args);
        },

        response_obj: function (response_arr, args) {
            for (var callback in args) {
                if (typeof args[callback] === 'function') {
                    return args[callback]({
                        errors: response_arr.filter(function (s) {
                            if (typeof s === 'string') return s;
                        })
                    });
                }
            }

            return response_arr;
        },

        init_lib: function (lib, args) {
            return this.trap(function () {
                if (this.libs.hasOwnProperty(lib)) {
                    this.patch(this.libs[lib]);
                    return this.libs[lib].init.apply(this.libs[lib], args);
                }
            }.bind(this), lib);
        },

        trap: function (fun, lib) {
            if (!this.nc) {
                try {
                    return fun();
                } catch (e) {
                    return this.error({name: lib, message: 'could not be initialized', more: e.name + ' ' + e.message});
                }
            }

            return fun();
        },

        patch: function (lib) {
            this.fix_outer(lib);
        },

        inherit: function (scope, methods) {
            var methods_arr = methods.split(' ');

            for (var i = methods_arr.length - 1; i >= 0; i--) {
                if (this.lib_methods.hasOwnProperty(methods_arr[i])) {
                    this.libs[scope.name][methods_arr[i]] = this.lib_methods[methods_arr[i]];
                }
            }
        },

        libs: {},

        // methods that can be inherited in libraries
        lib_methods: {
            set_data: function (node, data) {
                // this.name references the name of the library calling this method
                var id = this.name + (+new Date());

                Foundation.cache[id] = data;
                node.attr('data-' + this.name + '-id', id);
            },

            get_data: function (node) {
                return Foundation.cache[node.attr('data-' + this.name + '-id')];
            },

            remove_data: function (node) {
                if (node) {
                    delete Foundation.cache[node.attr('data-' + this.name + '-id')];
                    node.attr('data-' + this.name + '-id', '');
                } else {
                    $('[data-' + this.name + '-id]').each(function () {
                        delete Foundation.cache[$(this).attr('data-' + this.name + '-id')];
                        $(this).attr('data-' + this.name + '-id', '');
                    });
                }
            },

            throttle: function (fun, delay) {
                var timer = null;
                return function () {
                    var context = this, args = arguments;
                    clearTimeout(timer);
                    timer = setTimeout(function () {
                        fun.apply(context, args);
                    }, delay);
                };
            },

            // parses dat-options attribute on page nodes and turns
            // them into an object
            data_options: function (el) {
                var opts = {}, ii, p,
                    opts_arr = (el.attr('data-options') || ':').split(';'),
                    opts_len = opts_arr.length;

                function trim(str) {
                    if (typeof str === 'string') return $.trim(str);
                    return str;
                }

                // parse options
                for (ii = opts_len - 1; ii >= 0; ii--) {
                    p = opts_arr[ii].split(':');

                    if (/true/i.test(p[1])) p[1] = true;
                    if (/false/i.test(p[1])) p[1] = false;

                    if (p.length === 2) {
                        opts[trim(p[0])] = trim(p[1]);
                    }
                }

                return opts;
            },

            delay: function (fun, delay) {
                return setTimeout(fun, delay);
            },

            // animated scrolling
            scrollTo: function (el, to, duration) {
                if (duration < 0) return;
                var difference = to - $(window).scrollTop();
                var perTick = difference / duration * 10;

                this.scrollToTimerCache = setTimeout(function () {
                    if (!isNaN(parseInt(perTick, 10))) {
                        window.scrollTo(0, $(window).scrollTop() + perTick);
                        this.scrollTo(el, to, duration - 10);
                    }
                }.bind(this), 10);
            },

            // not supported in core Zepto
            scrollLeft: function (el) {
                if (!el.length) return;
                return ('scrollLeft' in el[0]) ? el[0].scrollLeft : el[0].pageXOffset;
            },

            // test for empty object or array
            empty: function (obj) {
                if (obj.length && obj.length > 0)    return false;
                if (obj.length && obj.length === 0)  return true;

                for (var key in obj) {
                    if (hasOwnProperty.call(obj, key))    return false;
                }

                return true;
            }
        },

        fix_outer: function (lib) {
            lib.outerHeight = function (el, bool) {
                if (typeof Zepto === 'function') {
                    return el.height();
                }

                if (typeof bool !== 'undefined') {
                    return el.outerHeight(bool);
                }

                return el.outerHeight();
            };

            lib.outerWidth = function (el) {
                if (typeof Zepto === 'function') {
                    return el.width();
                }

                if (typeof bool !== 'undefined') {
                    return el.outerWidth(bool);
                }

                return el.outerWidth();
            };
        },

        error: function (error) {
            return error.name + ' ' + error.message + '; ' + error.more;
        },

        // remove all foundation events.
        off: function () {
            $(this.scope).off('.fndtn');
            $(window).off('.fndtn');
            return true;
        },

        zj: function () {
            try {
                return Zepto;
            } catch (e) {
                return jQuery;
            }
        }()
    },

        $.fn.foundation = function () {
            var args = Array.prototype.slice.call(arguments, 0);

            return this.each(function () {
                Foundation.init.apply(Foundation, [this].concat(args));
                return this;
            });
        };

}(this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.alerts = {
        name: 'alerts',

        version: '4.0.0',

        settings: {
            speed: 300, // fade out speed
            callback: function () {
            }
        },

        init: function (scope, method, options) {
            this.scope = scope || this.scope;

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                if (!this.settings.init) this.events();

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;

            $(this.scope).on('click.fndtn.alerts', '[data-alert] a.close', function (e) {
                e.preventDefault();
                $(this).closest("[data-alert]").fadeOut(self.speed, function () {
                    $(this).remove();
                    self.settings.callback();
                });
            });

            this.settings.init = true;
        },

        off: function () {
            $(this.scope).off('.fndtn.alerts');
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.clearing = {
        name: 'clearing',

        version: '4.0.0',

        settings: {
            templates: {
                viewing: '<a href="#" class="clearing-close">&times;</a>' +
                '<div class="visible-img" style="display: none"><img src="//:0">' +
                '<p class="clearing-caption"></p><a href="#" class="clearing-main-left"><span></span></a>' +
                '<a href="#" class="clearing-main-right"><span></span></a></div>'
            },

            // comma delimited list of selectors that, on click, will close clearing,
            // add 'div.clearing-blackout, div.visible-img' to close on background click
            close_selectors: '.clearing-close',

            // event initializers and locks
            init: false,
            locked: false
        },

        init: function (scope, method, options) {
            this.scope = this.scope || scope;
            Foundation.inherit(this, 'set_data get_data remove_data throttle');

            if (typeof method === 'object') {
                options = $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                $(this.scope).find('ul[data-clearing]').each(function () {
                    var self = Foundation.libs.clearing,
                        $el = $(this),
                        options = options || {},
                        settings = self.get_data($el);

                    if (!settings) {
                        options.$parent = $el.parent();

                        self.set_data($el, $.extend(true, self.settings, options));

                        self.assemble($el.find('li'));

                        if (!self.settings.init) {
                            self.events().swipe_events();
                        }
                    }
                });

                return this.settings.init;
            } else {
                // fire method
                return this[method].call(this, options);
            }
        },

        // event binding and initial setup

        events: function () {
            var self = this;

            $(this.scope)
                .on('click.fndtn.clearing', 'ul[data-clearing] li',
                function (e, current, target) {
                    var current = current || $(this),
                        target = target || current,
                        settings = self.get_data(current.parent());

                    e.preventDefault();
                    if (!settings) self.init();

                    // set current and target to the clicked li if not otherwise defined.
                    self.open($(e.target), current, target);
                    self.update_paddles(target);
                })

                .on('click.fndtn.clearing', '.clearing-main-right',
                function (e) {
                    this.nav(e, 'next')
                }.bind(this))
                .on('click.fndtn.clearing', '.clearing-main-left',
                function (e) {
                    this.nav(e, 'prev')
                }.bind(this))
                .on('click.fndtn.clearing', this.settings.close_selectors,
                function (e) {
                    Foundation.libs.clearing.close(e, this)
                })
                .on('keydown.fndtn.clearing',
                function (e) {
                    this.keydown(e)
                }.bind(this));

            $(window).on('resize.fndtn.clearing',
                function (e) {
                    this.resize()
                }.bind(this));

            this.settings.init = true;
            return this;
        },

        swipe_events: function () {
            var self = this;

            $(this.scope)
                .on('touchstart.fndtn.clearing', '.visible-img', function (e) {
                    var data = {
                        start_page_x: e.touches[0].pageX,
                        start_page_y: e.touches[0].pageY,
                        start_time: (new Date()).getTime(),
                        delta_x: 0,
                        is_scrolling: undefined
                    };

                    $(this).data('swipe-transition', data);
                    e.stopPropagation();
                })
                .on('touchmove.fndtn.clearing', '.visible-img', function (e) {
                    // Ignore pinch/zoom events
                    if (e.touches.length > 1 || e.scale && e.scale !== 1) return;

                    var data = $(this).data('swipe-transition');

                    if (typeof data === 'undefined') {
                        data = {};
                    }

                    data.delta_x = e.touches[0].pageX - data.start_page_x;

                    if (typeof data.is_scrolling === 'undefined') {
                        data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
                    }

                    if (!data.is_scrolling && !data.active) {
                        e.preventDefault();
                        var direction = (data.delta_x < 0) ? 'next' : 'prev';
                        data.active = true;
                        self.nav(e, direction);
                    }
                })
                .on('touchend.fndtn.clearing', '.visible-img', function (e) {
                    $(this).data('swipe-transition', {});
                    e.stopPropagation();
                });
        },

        assemble: function ($li) {
            var $el = $li.parent(),
                settings = this.get_data($el),
                grid = $el.detach(),
                data = {
                    grid: '<div class="carousel">' + this.outerHTML(grid[0]) + '</div>',
                    viewing: settings.templates.viewing
                },
                wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
                    data.grid + '</div></div>';

            return settings.$parent.append(wrapper);
        },

        // event callbacks

        open: function ($image, current, target) {
            var root = target.closest('.clearing-assembled'),
                container = root.find('div').first(),
                visible_image = container.find('.visible-img'),
                image = visible_image.find('img').not($image);

            if (!this.locked()) {
                // set the image to the selected thumbnail
                image.attr('src', this.load($image));

                this.loaded(image, function () {
                    // toggle the gallery
                    root.addClass('clearing-blackout');
                    container.addClass('clearing-container');
                    visible_image.show();
                    this.fix_height(target)
                        .caption(visible_image.find('.clearing-caption'), $image)
                        .center(image)
                        .shift(current, target, function () {
                            target.siblings().removeClass('visible');
                            target.addClass('visible');
                        });
                }.bind(this));
            }
        },

        close: function (e, el) {
            e.preventDefault();

            var root = (function (target) {
                if (/blackout/.test(target.selector)) {
                    return target;
                } else {
                    return target.closest('.clearing-blackout');
                }
            }($(el))), container, visible_image;

            if (el === e.target && root) {
                container = root.find('div').first(),
                    visible_image = container.find('.visible-img');
                this.settings.prev_index = 0;
                root.find('ul[data-clearing]')
                    .attr('style', '').closest('.clearing-blackout')
                    .removeClass('clearing-blackout');
                container.removeClass('clearing-container');
                visible_image.hide();
            }

            return false;
        },

        keydown: function (e) {
            var clearing = $('.clearing-blackout').find('ul[data-clearing]');

            if (e.which === 39) this.go(clearing, 'next');
            if (e.which === 37) this.go(clearing, 'prev');
            if (e.which === 27) $('a.clearing-close').trigger('click');
        },

        nav: function (e, direction) {
            var clearing = $('.clearing-blackout').find('ul[data-clearing]');

            e.preventDefault();
            this.go(clearing, direction);
        },

        resize: function () {
            var image = $('.clearing-blackout .visible-img').find('img');

            if (image.length) {
                this.center(image);
            }
        },

        // visual adjustments
        fix_height: function (target) {
            var lis = target.parent().children(),
                self = this;

            lis.each(function () {
                var li = $(this),
                    image = li.find('img');

                if (li.height() > self.outerHeight(image)) {
                    li.addClass('fix-height');
                }
            })
                .closest('ul')
                .width(lis.length * 100 + '%');

            return this;
        },

        update_paddles: function (target) {
            var visible_image = target
                .closest('.carousel')
                .siblings('.visible-img');

            if (target.next().length) {
                visible_image
                    .find('.clearing-main-right')
                    .removeClass('disabled');
            } else {
                visible_image
                    .find('.clearing-main-right')
                    .addClass('disabled');
            }

            if (target.prev().length) {
                visible_image
                    .find('.clearing-main-left')
                    .removeClass('disabled');
            } else {
                visible_image
                    .find('.clearing-main-left')
                    .addClass('disabled');
            }
        },

        center: function (target) {
            target.css({
                marginLeft: -(this.outerWidth(target) / 2),
                marginTop: -(this.outerHeight(target) / 2)
            });
            return this;
        },

        // image loading and preloading

        load: function ($image) {
            var href = $image.parent().attr('href');

            this.preload($image);

            if (href) return href;
            return $image.attr('src');
        },

        preload: function ($image) {
            this
                .img($image.closest('li').next())
                .img($image.closest('li').prev());
        },

        loaded: function (image, callback) {
            // based on jquery.imageready.js
            // @weblinc, @jsantell, (c) 2012

            function loaded() {
                callback();
            }

            function bindLoad() {
                this.one('load', loaded);

                if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
                    var src = this.attr('src'),
                        param = src.match(/\?/) ? '&' : '?';

                    param += 'random=' + (new Date()).getTime();
                    this.attr('src', src + param);
                }
            }

            if (!image.attr('src')) {
                loaded();
                return;
            }

            if (this.complete || this.readyState === 4) {
                loaded();
            } else {
                bindLoad.call(image);
            }
        },

        img: function (img) {
            if (img.length) {
                var new_img = new Image(),
                    new_a = img.find('a');

                if (new_a.length) {
                    new_img.src = new_a.attr('href');
                } else {
                    new_img.src = img.find('img').attr('src');
                }
            }
            return this;
        },

        // image caption

        caption: function (container, $image) {
            var caption = $image.data('caption');

            if (caption) {
                container
                    .text(caption)
                    .show();
            } else {
                container
                    .text('')
                    .hide();
            }
            return this;
        },

        // directional methods

        go: function ($ul, direction) {
            var current = $ul.find('.visible'),
                target = current[direction]();

            if (target.length) {
                target
                    .find('img')
                    .trigger('click', [current, target]);
            }
        },

        shift: function (current, target, callback) {
            var clearing = target.parent(),
                old_index = this.settings.prev_index || target.index(),
                direction = this.direction(clearing, current, target),
                left = parseInt(clearing.css('left'), 10),
                width = this.outerWidth(target),
                skip_shift;

            // we use jQuery animate instead of CSS transitions because we
            // need a callback to unlock the next animation
            if (target.index() !== old_index && !/skip/.test(direction)) {
                if (/left/.test(direction)) {
                    this.lock();
                    clearing.animate({left: left + width}, 300, this.unlock());
                } else if (/right/.test(direction)) {
                    this.lock();
                    clearing.animate({left: left - width}, 300, this.unlock());
                }
            } else if (/skip/.test(direction)) {
                // the target image is not adjacent to the current image, so
                // do we scroll right or not
                skip_shift = target.index() - this.settings.up_count;
                this.lock();

                if (skip_shift > 0) {
                    clearing.animate({left: -(skip_shift * width)}, 300, this.unlock());
                } else {
                    clearing.animate({left: 0}, 300, this.unlock());
                }
            }

            callback();
        },

        direction: function ($el, current, target) {
            var lis = $el.find('li'),
                li_width = this.outerWidth(lis) + (this.outerWidth(lis) / 4),
                up_count = Math.floor(this.outerWidth($('.clearing-container')) / li_width) - 1,
                target_index = lis.index(target),
                response;

            this.settings.up_count = up_count;

            if (this.adjacent(this.settings.prev_index, target_index)) {
                if ((target_index > up_count)
                    && target_index > this.settings.prev_index) {
                    response = 'right';
                } else if ((target_index > up_count - 1)
                    && target_index <= this.settings.prev_index) {
                    response = 'left';
                } else {
                    response = false;
                }
            } else {
                response = 'skip';
            }

            this.settings.prev_index = target_index;

            return response;
        },

        adjacent: function (current_index, target_index) {
            for (var i = target_index + 1; i >= target_index - 1; i--) {
                if (i === current_index) return true;
            }
            return false;
        },

        // lock management

        lock: function () {
            this.settings.locked = true;
        },

        unlock: function () {
            this.settings.locked = false;
        },

        locked: function () {
            return this.settings.locked;
        },

        // plugin management/browser quirks

        outerHTML: function (el) {
            // support FireFox < 11
            return el.outerHTML || new XMLSerializer().serializeToString(el);
        },

        off: function () {
            $(this.scope).off('.fndtn.clearing');
            $(window).off('.fndtn.clearing');
            this.remove_data(); // empty settings cache
            this.settings.init = false;
        }
    };

}(Foundation.zj, this, this.document));
/*!
 * jQuery Cookie Plugin v1.3
 * https://github.com/carhartl/jquery-cookie
 *
 * Copyright 2011, Klaus Hartl
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.opensource.org/licenses/GPL-2.0
 *
 * Modified to work with Zepto.js by ZURB
 */

(function ($, document, undefined) {

    var pluses = /\+/g;

    function raw(s) {
        return s;
    }

    function decoded(s) {
        return decodeURIComponent(s.replace(pluses, ' '));
    }

    var config = $.cookie = function (key, value, options) {

        // write
        if (value !== undefined) {
            options = $.extend({}, config.defaults, options);

            if (value === null) {
                options.expires = -1;
            }

            if (typeof options.expires === 'number') {
                var days = options.expires, t = options.expires = new Date();
                t.setDate(t.getDate() + days);
            }

            value = config.json ? JSON.stringify(value) : String(value);

            return (document.cookie = [
                encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),
                options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
                options.path ? '; path=' + options.path : '',
                options.domain ? '; domain=' + options.domain : '',
                options.secure ? '; secure' : ''
            ].join(''));
        }

        // read
        var decode = config.raw ? raw : decoded;
        var cookies = document.cookie.split('; ');
        for (var i = 0, l = cookies.length; i < l; i++) {
            var parts = cookies[i].split('=');
            if (decode(parts.shift()) === key) {
                var cookie = decode(parts.join('='));
                return config.json ? JSON.parse(cookie) : cookie;
            }
        }

        return null;
    };

    config.defaults = {};

    $.removeCookie = function (key, options) {
        if ($.cookie(key) !== null) {
            $.cookie(key, null, options);
            return true;
        }
        return false;
    };

})(Foundation.zj, document);
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.dropdown = {
        name: 'dropdown',

        version: '4.0.0',

        settings: {
            activeClass: 'open'
        },

        init: function (scope, method, options) {
            this.scope = scope || this.scope;
            Foundation.inherit(this, 'throttle');

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {

                if (!this.settings.init) {
                    this.events();
                }

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;

            $(this.scope).on('click.fndtn.dropdown', '[data-dropdown]', function (e) {
                e.preventDefault();
                e.stopPropagation();
                self.toggle($(this));
            });

            $('*, html, body').on('click.fndtn.dropdown', function (e) {
                if (!$(e.target).data('dropdown')) {

                    $('[data-dropdown-content]')
                        .css('left', '-99999px')
                        .removeClass(self.settings.activeClass);
                }
            });

            $('[data-dropdown-content]').on('click.fndtn.dropdown', function (e) {
                e.stopPropagation();
            });

            $(window).on('resize.fndtn.dropdown', self.throttle(function () {
                self.resize.call(self);
            }, 50)).trigger('resize');

            this.settings.init = true;
        },

        toggle: function (target, resize) {
            var dropdown = $('#' + target.data('dropdown'));

            $('[data-dropdown-content]').not(dropdown).css('left', '-99999px');

            if (dropdown.hasClass(this.settings.activeClass)) {
                dropdown
                    .css('left', '-99999px')
                    .removeClass(this.settings.activeClass);
            } else {
                this
                    .css(dropdown
                        .addClass(this.settings.activeClass), target);
            }
        },

        resize: function () {
            var dropdown = $('[data-dropdown-content].open'),
                target = $("[data-dropdown='" + dropdown.attr('id') + "']");

            if (dropdown.length && target.length) {
                this.css(dropdown, target);
            }
        },

        css: function (dropdown, target) {
            var offset = target.col - md - offset - ();

            if (this.small()) {
                dropdown.css({
                    position: 'absolute',
                    width: '95%',
                    left: '2.5%',
                    'max-width': 'none',
                    top: offset.top + this.outerHeight(target)
                });
            } else {
                dropdown.attr('style', '').css({
                    position: 'absolute',
                    top: offset.top + this.outerHeight(target),
                    left: offset.left
                });
            }

            return dropdown;
        },

        small: function () {
            return $(window).width() < 768 || $('html').hasClass('lt-ie9');
        },

        off: function () {
            $(this.scope).off('.fndtn.dropdown');
            $('html, body').off('.fndtn.dropdown');
            $(window).off('.fndtn.dropdown');
            $('[data-dropdown-content]').off('.fndtn.dropdown');
            this.settings.init = false;
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.forms = {
        name: 'forms',

        version: '4.0.4',

        settings: {
            disable_class: 'no-custom'
        },

        init: function (scope, method, options) {
            this.scope = scope || this.scope;

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                if (!this.settings.init) {
                    this.events();
                }

                this.assemble();

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        assemble: function () {
            $('form.custom input[type="radio"]', $(this.scope)).not('[data-customforms="disabled"]')
                .each(this.append_custom_markup);
            $('form.custom input[type="checkbox"]', $(this.scope)).not('[data-customforms="disabled"]')
                .each(this.append_custom_markup);
            $('form.custom select', $(this.scope)).not('[data-customforms="disabled"]')
                .each(this.append_custom_select);
        },

        events: function () {
            var self = this;

            $(this.scope)
                .on('change.fndtn.forms', 'form.custom select:not([data-customforms="disabled"])', function (e) {
                    self.refresh_custom_select($(this));
                })
                .on('click.fndtn.forms', 'form.custom label', function (e) {
                    var $associatedElement = $('#' + self.escape($(this).attr('for')) + ':not([data-customforms="disabled"])'),
                        $customCheckbox,
                        $customRadio;
                    if ($associatedElement.length !== 0) {
                        if ($associatedElement.attr('type') === 'checkbox') {
                            e.preventDefault();
                            $customCheckbox = $(this).find('span.custom.checkbox');

                            //the checkbox might be outside after the label
                            if ($customCheckbox.length == 0) {
                                $customCheckbox = $(this).next('span.custom.checkbox');
                            }
                            //the checkbox might be outside before the label
                            if ($customCheckbox.length == 0) {
                                $customCheckbox = $(this).prev('span.custom.checkbox');
                            }
                            self.toggle_checkbox($customCheckbox);
                        } else if ($associatedElement.attr('type') === 'radio') {
                            e.preventDefault();
                            $customRadio = $(this).find('span.custom.radio');
                            //the radio might be outside after the label
                            if ($customRadio.length == 0) {
                                $customRadio = $(this).next('span.custom.radio');
                            }
                            //the radio might be outside before the label
                            if ($customRadio.length == 0) {
                                $customRadio = $(this).prev('span.custom.radio');
                            }
                            self.toggle_radio($customRadio);
                        }
                    }
                })
                .on('click.fndtn.forms', 'form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector', function (e) {
                    var $this = $(this),
                        $dropdown = $this.closest('div.custom.dropdown'),
                        $select = $dropdown.prev();

                    // make sure other dropdowns close
                    if (!$dropdown.hasClass('open'))
                        $(self.scope).trigger('click');

                    e.preventDefault();
                    if (false === $select.is(':disabled')) {
                        $dropdown.toggleClass('open');

                        if ($dropdown.hasClass('open')) {
                            $(self.scope).on('click.fndtn.forms.customdropdown', function () {
                                $dropdown.removeClass('open');
                                $(self.scope).off('.fndtn.forms.customdropdown');
                            });
                        } else {
                            $(self.scope).on('.fndtn.forms.customdropdown');
                        }
                        return false;
                    }
                })
                .on('click.fndtn.forms touchend.fndtn.forms', 'form.custom div.custom.dropdown li', function (e) {
                    var $this = $(this),
                        $customDropdown = $this.closest('div.custom.dropdown'),
                        $select = $customDropdown.prev(),
                        selectedIndex = 0;

                    e.preventDefault();
                    e.stopPropagation();

                    if (!$(this).hasClass('disabled')) {
                        $('div.dropdown').not($customDropdown).removeClass('open');

                        var $oldThis = $this
                            .closest('ul')
                            .find('li.selected');
                        $oldThis.removeClass('selected');

                        $this.addClass('selected');

                        $customDropdown
                            .removeClass('open')
                            .find('a.current')
                            .html($this.html());

                        $this.closest('ul').find('li').each(function (index) {
                            if ($this[0] == this) {
                                selectedIndex = index;
                            }

                        });
                        $select[0].selectedIndex = selectedIndex;

                        //store the old value in data
                        $select.data('prevalue', $oldThis.html());
                        $select.trigger('change');
                    }
                });

            this.settings.init = true;
        },

        append_custom_markup: function (idx, sel) {
            var $this = $(sel).hide(),
                type = $this.attr('type'),
                $span = $this.next('span.custom.' + type);

            if ($span.length === 0) {
                $span = $('<span class="custom ' + type + '"></span>').insertAfter($this);
            }

            $span.toggleClass('checked', $this.is(':checked'));
            $span.toggleClass('disabled', $this.is(':disabled'));
        },

        append_custom_select: function (idx, sel) {
            var self = Foundation.libs.forms,
                $this = $(sel),
                $customSelect = $this.next('div.custom.dropdown'),
                $customList = $customSelect.find('ul'),
                $selectCurrent = $customSelect.find(".current"),
                $selector = $customSelect.find(".selector"),
                $options = $this.find('option'),
                $selectedOption = $options.filter(':selected'),
                copyClasses = $this.attr('class') ? $this.attr('class').split(' ') : [],
                maxWidth = 0,
                liHtml = '',
                $listItems,
                $currentSelect = false;

            if ($this.hasClass(self.settings.disable_class)) return;

            if ($customSelect.length === 0) {
                var customSelectSize = $this.hasClass('small') ? 'small' :
                    $this.hasClass('medium') ? 'medium' :
                        $this.hasClass('large') ? 'large' :
                            $this.hasClass('expand') ? 'expand' : '';

                $customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize].concat(copyClasses).filter(function (item, idx, arr) {
                        if (item == '') return false;
                        return arr.indexOf(item) == idx;
                    }).join(' ') + '"><a href="#" class="selector"></a><ul /></div>');
                $selector = $customSelect.find(".selector");
                $customList = $customSelect.find("ul");
                liHtml = $options.map(function () {
                    return "<li>" + $(this).html() + "</li>";
                }).get().join('');
                $customList.append(liHtml);
                $currentSelect = $customSelect.prepend('<a href="#" class="current">' + $selectedOption.html() + '</a>').find(".current");
                $this
                    .after($customSelect)
                    .hide();

            } else {
                liHtml = $options.map(function () {
                    return "<li>" + $(this).html() + "</li>";
                })
                    .get().join('');
                $customList
                    .html('')
                    .append(liHtml);

            } // endif $customSelect.length === 0
            $customSelect.toggleClass('disabled', $this.is(':disabled'));
            $listItems = $customList.find('li');

            $options.each(function (index) {
                if (this.selected) {
                    $listItems.eq(index).addClass('selected');

                    if ($currentSelect) {
                        $currentSelect.html($(this).html());
                    }

                }
                if ($(this).is(':disabled')) {
                    $listItems.eq(index).addClass('disabled');
                }
            });

            //
            // If we're not specifying a predetermined form size.
            //
            if (!$customSelect.is('.small, .medium, .large, .expand')) {

                // ------------------------------------------------------------------------------------
                // This is a work-around for when elements are contained within hidden parents.
                // For example, when custom-form elements are inside of a hidden reveal modal.
                //
                // We need to display the current custom list element as well as hidden parent elements
                // in order to properly calculate the list item element's width property.
                // -------------------------------------------------------------------------------------

                $customSelect.addClass('open');
                //
                // Quickly, display all parent elements.
                // This should help us calcualate the width of the list item's within the drop down.
                //
                var self = Foundation.libs.forms;
                self.hidden_fix.adjust($customList);

                maxWidth = ( self.outerWidth($listItems) > maxWidth ) ? self.outerWidth($listItems) : maxWidth;

                Foundation.libs.forms.hidden_fix.reset();

                $customSelect.removeClass('open');

            } // endif

        },

        refresh_custom_select: function ($select) {
            var self = this;
            var maxWidth = 0,
                $customSelect = $select.next(),
                $options = $select.find('option');

            $customSelect.find('ul').html('');

            $options.each(function () {
                var $li = $('<li>' + $(this).html() + '</li>');
                $customSelect.find('ul').append($li);
            });

            // re-populate
            $options.each(function (index) {
                if (this.selected) {
                    $customSelect.find('li').eq(index).addClass('selected');
                    $customSelect.find('.current').html($(this).html());
                }
                if ($(this).is(':disabled')) {
                    $customSelect.find('li').eq(index).addClass('disabled');
                }
            });

            // fix width
            $customSelect.removeAttr('style')
                .find('ul').removeAttr('style');
            $customSelect.find('li').each(function () {
                $customSelect.addClass('open');
                if (self.outerWidth($(this)) > maxWidth) {
                    maxWidth = self.outerWidth($(this));
                }
                $customSelect.removeClass('open');
            });
        },

        toggle_checkbox: function ($element) {
            var $input = $element.prev(),
                input = $input[0];

            if (false === $input.is(':disabled')) {
                input.checked = ((input.checked) ? false : true);
                $element.toggleClass('checked');

                $input.trigger('change');
            }
        },

        toggle_radio: function ($element) {
            var $input = $element.prev(),
                $form = $input.closest('form.custom'),
                input = $input[0];

            if (false === $input.is(':disabled')) {
                $form.find('input[type="radio"][name="' + this.escape($input.attr('name')) + '"]').next().not($element).removeClass('checked');
                if (!$element.hasClass('checked')) {
                    $element.toggleClass('checked');
                }
                input.checked = $element.hasClass('checked');

                $input.trigger('change');
            }
        },

        escape: function (text) {
            return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
        },

        hidden_fix: {
            /**
             * Sets all hidden parent elements and self to visibile.
             *
             * @method adjust
             * @param {jQuery Object} $child
             */

            // We'll use this to temporarily store style properties.
            tmp: [],

            // We'll use this to set hidden parent elements.
            hidden: null,

            adjust: function ($child) {
                // Internal reference.
                var _self = this;

                // Set all hidden parent elements, including this element.
                _self.hidden = $child.parents().andSelf().filter(":hidden");

                // Loop through all hidden elements.
                _self.hidden.each(function () {

                    // Cache the element.
                    var $elem = $(this);

                    // Store the style attribute.
                    // Undefined if element doesn't have a style attribute.
                    _self.tmp.push($elem.attr('style'));

                    // Set the element's display property to block,
                    // but ensure it's visibility is hidden.
                    $elem.css({'visibility': 'hidden', 'display': 'block'});
                });

            }, // end adjust

            /**
             * Resets the elements previous state.
             *
             * @method reset
             */
            reset: function () {
                // Internal reference.
                var _self = this;
                // Loop through our hidden element collection.
                _self.hidden.each(function (i) {
                    // Cache this element.
                    var $elem = $(this),
                        _tmp = _self.tmp[i]; // Get the stored 'style' value for this element.

                    // If the stored value is undefined.
                    if (_tmp === undefined)
                    // Remove the style attribute.
                        $elem.removeAttr('style');
                    else
                    // Otherwise, reset the element style attribute.
                        $elem.attr('style', _tmp);

                });
                // Reset the tmp array.
                _self.tmp = [];
                // Reset the hidden elements variable.
                _self.hidden = null;

            } // end reset

        },

        off: function () {
            $(this.scope).off('.fndtn.forms');
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.joyride = {
        name: 'joyride',

        version: '4.0.0',

        defaults: {
            tipLocation: 'bottom',  // 'top' or 'bottom' in relation to parent
            nubPosition: 'auto',    // override on a per tooltip bases
            scrollSpeed: 300,       // Page scrolling speed in milliseconds
            timer: 0,         // 0 = no timer , all other numbers = timer in milliseconds
            startTimerOnClick: true,      // true or false - true requires clicking the first button start the timer
            startOffset: 0,         // the index of the tooltip you want to start on (index of the li)
            nextButton: true,      // true or false to control whether a next button is used
            tipAnimation: 'fade',    // 'pop' or 'fade' in each tip
            pauseAfter: [],        // array of indexes where to pause the tour after
            tipAnimationFadeSpeed: 300,       // when tipAnimation = 'fade' this is speed in milliseconds for the transition
            cookieMonster: false,     // true or false to control whether cookies are used
            cookieName: 'joyride', // Name the cookie you'll use
            cookieDomain: false,     // Will this cookie be attached to a domain, ie. '.notableapp.com'
            cookieExpires: 365,       // set when you would like the cookie to expire.
            tipContainer: 'body',    // Where will the tip be attached
            postRideCallback: function () {
            },    // A method to call once the tour closes (canceled or complete)
            postStepCallback: function () {
            },    // A method to call after each step
            template: { // HTML segments for tip layout
                link: '<a href="#close" class="joyride-close-tip">&times;</a>',
                timer: '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
                tip: '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
                wrapper: '<div class="joyride-content-wrapper"></div>',
                button: '<a href="#" class="small button joyride-next-tip"></a>'
            }
        },

        settings: {},

        init: function (scope, method, options) {
            this.scope = scope || this.scope;
            Foundation.inherit(this, 'throttle data_options scrollTo scrollLeft delay');

            if (typeof method === 'object') {
                $.extend(true, this.settings, this.defaults, method);
            } else {
                $.extend(true, this.settings, this.defaults, options);
            }

            if (typeof method != 'string') {
                if (!this.settings.init) this.events();

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;

            $(this.scope)
                .on('click.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
                    e.preventDefault();

                    if (this.settings.$li.next().length < 1) {
                        this.end();
                    } else if (this.settings.timer > 0) {
                        clearTimeout(this.settings.automate);
                        this.hide();
                        this.show();
                        this.startTimer();
                    } else {
                        this.hide();
                        this.show();
                    }

                }.bind(this))

                .on('click.joyride', '.joyride-close-tip', function (e) {
                    e.preventDefault();
                    this.end();
                }.bind(this));

            $(window).on('resize.fndtn.joyride', self.throttle(function () {
                if ($('[data-joyride]').length > 0 && self.settings.$next_tip) {
                    if (self.is_phone()) {
                        self.pos_phone();
                    } else {
                        self.pos_default();
                    }
                }
            }, 100));

            this.settings.init = true;
        },

        start: function () {
            var self = this,
                $this = $(this.scope).find('[data-joyride]'),
                integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
                int_settings_count = integer_settings.length;

            if (!this.settings.init) this.init();
            $.extend(true, this.settings, this.data_options($this));

            // non configureable settings
            this.settings.$content_el = $this;
            this.settings.body_offset = $(this.settings.tipContainer).position();
            this.settings.$tip_content = this.settings.$content_el.find('> li');
            this.settings.paused = false;
            this.settings.attempts = 0;

            // Make sure that settings parsed from data_options are integers where necessary
            for (var i = int_settings_count - 1; i >= 0; i--) {
                this.settings[integer_settings[i]] = parseInt(this.settings[integer_settings[i]], 10);
            }

            this.settings.tipLocationPatterns = {
                top: ['bottom'],
                bottom: [], // bottom should not need to be repositioned
                left: ['right', 'top', 'bottom'],
                right: ['left', 'top', 'bottom']
            };

            // can we create cookies?
            if (typeof $.cookie !== 'function') {
                this.settings.cookieMonster = false;
            }

            // generate the tips and insert into dom.
            if (!this.settings.cookieMonster || this.settings.cookieMonster && $.cookie(this.settings.cookieName) === null) {

                this.settings.$tip_content.each(function (index) {
                    self.create({$li: $(this), index: index});
                });

                // show first tip
                if (!this.settings.startTimerOnClick && this.settings.timer > 0) {
                    this.show('init');
                    this.startTimer();
                } else {
                    this.show('init');
                }

            }
        },

        resume: function () {
            this.set_li();
            this.show();
        },

        tip_template: function (opts) {
            var $blank, content;

            opts.tip_class = opts.tip_class || '';

            $blank = $(this.settings.template.tip).addClass(opts.tip_class);
            content = $.trim($(opts.li).html()) +
                this.button_text(opts.button_text) +
                this.settings.template.link +
                this.timer_instance(opts.index);

            $blank.append($(this.settings.template.wrapper));
            $blank.first().attr('data-index', opts.index);
            $('.joyride-content-wrapper', $blank).append(content);

            return $blank[0];
        },

        timer_instance: function (index) {
            var txt;

            if ((index === 0 && this.settings.startTimerOnClick && this.settings.timer > 0) || this.settings.timer === 0) {
                txt = '';
            } else {
                txt = this.outerHTML($(this.settings.template.timer)[0]);
            }
            return txt;
        },

        button_text: function (txt) {
            if (this.settings.nextButton) {
                txt = $.trim(txt) || 'Next';
                txt = this.outerHTML($(this.settings.template.button).append(txt)[0]);
            } else {
                txt = '';
            }
            return txt;
        },

        create: function (opts) {
            // backwards compatability with data-text attribute
            var buttonText = opts.$li.attr('data-button') || opts.$li.attr('data-text'),
                tipClass = opts.$li.attr('class'),
                $tip_content = $(this.tip_template({
                    tip_class: tipClass,
                    index: opts.index,
                    button_text: buttonText,
                    li: opts.$li
                }));

            $(this.settings.tipContainer).append($tip_content);
        },

        show: function (init) {
            var $timer = null;

            // are we paused?
            if (this.settings.$li === undefined
                || ($.inArray(this.settings.$li.index(), this.settings.pauseAfter) === -1)) {

                // don't go to the next li if the tour was paused
                if (this.settings.paused) {
                    this.settings.paused = false;
                } else {
                    this.set_li(init);
                }

                this.settings.attempts = 0;

                if (this.settings.$li.length && this.settings.$target.length > 0) {

                    this.settings.tipSettings = $.extend(true,
                        this.settings, this.data_options(this.settings.$li));

                    this.settings.timer = parseInt(this.settings.timer, 10);

                    this.settings.tipSettings.tipLocationPattern = this.settings.tipLocationPatterns[this.settings.tipSettings.tipLocation];

                    // scroll if not modal
                    if (!/body/i.test(this.settings.$target.selector)) {
                        this.scroll_to();
                    }

                    if (this.is_phone()) {
                        this.pos_phone(true);
                    } else {
                        this.pos_default(true);
                    }

                    $timer = this.settings.$next_tip.find('.joyride-timer-indicator');

                    if (/pop/i.test(this.settings.tipAnimation)) {

                        $timer.width(0);

                        if (thsi.settings.timer > 0) {

                            this.settings.$next_tip.show();

                            this.delay(function () {
                                $timer.animate({
                                    width: $timer.parent().width()
                                }, this.settings.timer, 'linear');
                            }.bind(this), this.settings.tipAnimationFadeSpeed);

                        } else {
                            this.settings.$next_tip.show();

                        }


                    } else if (/fade/i.test(this.settings.tipAnimation)) {

                        $timer.width(0);

                        if (this.settings.timer > 0) {

                            this.settings.$next_tip
                                .fadeIn(this.settings.tipAnimationFadeSpeed)
                                .show();

                            this.delay(function () {
                                $timer.animate({
                                    width: $timer.parent().width()
                                }, this.settings.timer, 'linear');
                            }.bind(this), this.settings.tipAnimationFadeSpeed);

                        } else {
                            this.settings.$next_tip.fadeIn(this.settings.tipAnimationFadeSpeed);

                        }
                    }

                    this.settings.$current_tip = this.settings.$next_tip;

                    // skip non-existant targets
                } else if (this.settings.$li && this.settings.$target.length < 1) {

                    this.show();

                } else {

                    this.end();

                }
            } else {

                this.settings.paused = true;

            }

        },

        is_phone: function () {
            if (Modernizr) {
                return Modernizr.mq('only screen and (max-width: 767px)') || $('.lt-ie9').length > 0;
            }

            return (this.settings.$window.width() < 767) ? true : false;
        },

        hide: function () {
            this.settings.postStepCallback(this.settings.$li.index(),
                this.settings.$current_tip);
            $('.joyride-modal-bg').hide();
            this.settings.$current_tip.hide();
        },

        set_li: function (init) {
            if (init) {
                this.settings.$li = this.settings.$tip_content.eq(this.settings.startOffset);
                this.set_next_tip();
                this.settings.$current_tip = this.settings.$next_tip;
            } else {
                this.settings.$li = this.settings.$li.next();
                this.set_next_tip();
            }

            this.set_target();
        },

        set_next_tip: function () {
            this.settings.$next_tip = $(".joyride-tip-guide[data-index='" + this.settings.$li.index() + "']");
            this.settings.$next_tip.data('closed', '');
        },

        set_target: function () {
            var cl = this.settings.$li.attr('data-class'),
                id = this.settings.$li.attr('data-id'),
                $sel = function () {
                    if (id) {
                        return $(document.getElementById(id));
                    } else if (cl) {
                        return $('.' + cl).first();
                    } else {
                        return $('body');
                    }
                };

            this.settings.$target = $sel();
        },

        scroll_to: function () {
            var window_half, tipOffset;

            window_half = $(window).height() / 2;
            tipOffset = Math.ceil(this.settings.$target.col - md - offset - ().top - window_half + this.outerHeight(this.settings.$next_tip));
            if (tipOffset > 0) {
                this.scrollTo($('html, body'), tipOffset, this.settings.scrollSpeed);
            }
        },

        paused: function () {
            if (($.inArray((this.settings.$li.index() + 1), this.settings.pauseAfter) === -1)) {
                return true;
            }

            return false;
        },

        restart: function () {
            this.hide();
            this.settings.$li = undefined;
            this.show('init');
        },

        pos_default: function (init) {
            var half_fold = Math.ceil($(window).height() / 2),
                tip_position = this.settings.$next_tip.col - md - offset - (),
                $nub = this.settings.$next_tip.find('.joyride-nub'),
                nub_height = Math.ceil(this.outerHeight($nub) / 2),
                toggle = init || false;

            // tip must not be "display: none" to calculate position
            if (toggle) {
                this.settings.$next_tip.css('visibility', 'hidden');
                this.settings.$next_tip.show();
            }

            if (!/body/i.test(this.settings.$target.selector)) {

                if (this.bottom()) {
                    this.settings.$next_tip.css({
                        top: (this.settings.$target.col - md - offset - ().top + nub_height + this.outerHeight(this.settings.$target)),
                        left: this.settings.$target.col - md - offset - ().left
                    });

                    this.nub_position($nub, this.settings.tipSettings.nubPosition, 'top');

                } else if (this.top()) {

                    this.settings.$next_tip.css({
                        top: (this.settings.$target.col - md - offset - ().top - this.outerHeight(this.settings.$next_tip) - nub_height),
                        left: this.settings.$target.col - md - offset - ().left
                    });

                    this.nub_position($nub, this.settings.tipSettings.nubPosition, 'bottom');

                } else if (this.right()) {

                    this.settings.$next_tip.css({
                        top: this.settings.$target.col - md - offset - ().top,
                        left: (this.outerWidth(this.settings.$target) + this.settings.$target.col - md - offset - ().left)
                    });

                    this.nub_position($nub, this.settings.tipSettings.nubPosition, 'left');

                } else if (this.left()) {

                    this.settings.$next_tip.css({
                        top: this.settings.$target.col - md - offset - ().top,
                        left: (this.settings.$target.col - md - offset - ().left - this.outerWidth(this.settings.$next_tip) - nub_height)
                    });

                    this.nub_position($nub, this.settings.tipSettings.nubPosition, 'right');

                }

                if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tipSettings.tipLocationPattern.length) {

                    $nub.removeClass('bottom')
                        .removeClass('top')
                        .removeClass('right')
                        .removeClass('left');

                    this.settings.tipSettings.tipLocation = this.settings.tipSettings.tipLocationPattern[this.settings.attempts];

                    this.settings.attempts++;

                    this.pos_default(true);

                }

            } else if (this.settings.$li.length) {

                this.pos_modal($nub);

            }

            if (toggle) {
                this.settings.$next_tip.hide();
                this.settings.$next_tip.css('visibility', 'visible');
            }

        },

        pos_phone: function (init) {
            var tip_height = this.outerHeight(this.settings.$next_tip),
                tip_offset = this.settings.$next_tip.col - md - offset - (),
                target_height = this.outerHeight(this.settings.$target),
                $nub = $('.joyride-nub', this.settings.$next_tip),
                nub_height = Math.ceil(this.outerHeight($nub) / 2),
                toggle = init || false;

            $nub.removeClass('bottom')
                .removeClass('top')
                .removeClass('right')
                .removeClass('left');

            if (toggle) {
                this.settings.$next_tip.css('visibility', 'hidden');
                this.settings.$next_tip.show();
            }

            if (!/body/i.test(this.settings.$target.selector)) {

                if (this.top()) {

                    this.settings.$next_tip.col - md - offset - ({top: this.settings.$target.col - md - offset - ().top - tip_height - nub_height});
                    $nub.addClass('bottom');

                } else {

                    this.settings.$next_tip.col - md - offset - ({top: this.settings.$target.col - md - offset - ().top + target_height + nub_height});
                    $nub.addClass('top');

                }

            } else if (this.settings.$li.length) {
                this.pos_modal($nub);
            }

            if (toggle) {
                this.settings.$next_tip.hide();
                this.settings.$next_tip.css('visibility', 'visible');
            }
        },

        pos_modal: function ($nub) {
            this.center();
            $nub.hide();
            if (!this.settings.$next_tip.data('closed')) {
                if ($('.joyride-modal-bg').length < 1) {
                    $('body').append('<div class="joyride-modal-bg">').show();
                }

                if (/pop/i.test(this.settings.tipAnimation)) {
                    $('.joyride-modal-bg').show();
                } else {
                    $('.joyride-modal-bg').fadeIn(this.settings.tipAnimationFadeSpeed);
                }
            }
        },

        center: function () {
            var $w = $(window);

            this.settings.$next_tip.css({
                top: ((($w.height() - this.outerHeight(this.settings.$next_tip)) / 2) + $w.scrollTop()),
                left: ((($w.width() - this.outerWidth(this.settings.$next_tip)) / 2) + this.scrollLeft($w))
            });

            return true;
        },

        bottom: function () {
            return /bottom/i.test(this.settings.tipSettings.tipLocation);
        },

        top: function () {
            return /top/i.test(this.settings.tipSettings.tipLocation);
        },

        right: function () {
            return /right/i.test(this.settings.tipSettings.tipLocation);
        },

        left: function () {
            return /left/i.test(this.settings.tipSettings.tipLocation);
        },

        corners: function (el) {
            var w = $(window),
                right = w.width() + this.scrollLeft(w),
                bottom = w.width() + w.scrollTop();

            return [
                el.col - md - offset - ().top <= w.scrollTop(),
                right <= el.col - md - offset - ().left + this.outerWidth(el),
                bottom <= el.col - md - offset - ().top + this.outerHeight(el),
                this.scrollLeft(w) >= el.col - md - offset - ().left
            ];
        },

        visible: function (hidden_corners) {
            var i = hidden_corners.length;

            while (i--) {
                if (hidden_corners[i]) return false;
            }

            return true;
        },

        nub_position: function (nub, pos, def) {
            if (pos === 'auto') {
                nub.addClass(def);
            } else {
                nub.addClass(pos);
            }
        },

        startTimer: function () {
            if (this.settings.$li.length) {
                this.settings.automate = setTimeout(function () {
                    this.hide();
                    this.show();
                    this.startTimer();
                }.bind(this), this.settings.timer);
            } else {
                clearTimeout(this.settings.automate);
            }
        },

        end: function () {
            if (this.settings.cookieMonster) {
                $.cookie(this.settings.cookieName, 'ridden', {
                    expires: this.settings.cookieExpires,
                    domain: this.settings.cookieDomain
                });
            }

            if (this.settings.timer > 0) {
                clearTimeout(this.settings.automate);
            }

            this.settings.$next_tip.data('closed', true);

            $('.joyride-modal-bg').hide();
            this.settings.$current_tip.hide();
            this.settings.postStepCallback(this.settings.$li.index(), this.settings.$current_tip);
            this.settings.postRideCallback(this.settings.$li.index(), this.settings.$current_tip);
        },

        outerHTML: function (el) {
            // support FireFox < 11
            return el.outerHTML || new XMLSerializer().serializeToString(el);
        },

        off: function () {
            $(this.scope).off('.joyride');
            $(window).off('.joyride');
            $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
            $('.joyride-tip-guide, .joyride-modal-bg').remove();
            clearTimeout(this.settings.automate);
            this.settings = {};
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.magellan = {
        name: 'magellan',

        version: '4.0.0',

        settings: {
            activeClass: 'active'
        },

        init: function (scope, method, options) {
            this.scope = scope || this.scope;
            Foundation.inherit(this, 'data_options');

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                if (!this.settings.init) {
                    this.fixed_magellan = $("[data-magellan-expedition]");
                    this.set_threshold();
                    this.last_destination = $('[data-magellan-destination]').last();
                    this.events();
                }

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;
            $(this.scope).on('arrival.fndtn.magellan', '[data-magellan-arrival]', function (e) {
                var $destination = $(this),
                    $expedition = $destination.closest('[data-magellan-expedition]'),
                    activeClass = $expedition.attr('data-magellan-active-class')
                        || self.settings.activeClass;

                $destination
                    .closest('[data-magellan-expedition]')
                    .find('[data-magellan-arrival]')
                    .not($destination)
                    .removeClass(activeClass);
                $destination.addClass(activeClass);
            });

            this.fixed_magellan
                .on('update-position.fndtn.magellan', function () {
                    var $el = $(this);
                    // $el.data("magellan-fixed-position","");
                    //$el.data("magellan-top-offset", "");
                })
                .trigger('update-position');

            $(window)
                .on('resize.fndtn.magellan', function () {
                    this.fixed_magellan.trigger('update-position');
                }.bind(this))

                .on('scroll.fndtn.magellan', function () {
                    var windowScrollTop = $(window).scrollTop();
                    self.fixed_magellan.each(function () {
                        var $expedition = $(this);
                        if (typeof $expedition.data('magellan-top-offset') === 'undefined') {
                            $expedition.data('magellan-top-offset', $expedition.col - md - offset - ().top);
                        }
                        if (typeof $expedition.data('magellan-fixed-position') === 'undefined') {
                            $expedition.data('magellan-fixed-position', false)
                        }
                        var fixed_position = (windowScrollTop + self.settings.threshold) > $expedition.data("magellan-top-offset");
                        var attr = $expedition.attr('data-magellan-top-offset');

                        if ($expedition.data("magellan-fixed-position") != fixed_position) {
                            $expedition.data("magellan-fixed-position", fixed_position);
                            if (fixed_position) {
                                $expedition.css({position: "fixed", top: 0});
                            } else {
                                $expedition.css({position: "", top: ""});
                            }
                            if (fixed_position && typeof attr != 'undefined' && attr != false) {
                                $expedition.css({position: "fixed", top: attr + "px"});
                            }
                        }
                    });
                });


            if (this.last_destination.length > 0) {
                $(window).on('scroll.fndtn.magellan', function (e) {
                    var windowScrollTop = $(window).scrollTop(),
                        scrolltopPlusHeight = windowScrollTop + $(window).height(),
                        lastDestinationTop = Math.ceil(self.last_destination.col - md - offset - ().top);

                    $('[data-magellan-destination]').each(function () {
                        var $destination = $(this),
                            destination_name = $destination.attr('data-magellan-destination'),
                            topOffset = $destination.col - md - offset - ().top - windowScrollTop;

                        if (topOffset <= self.settings.threshold) {
                            $("[data-magellan-arrival='" + destination_name + "']").trigger('arrival');
                        }
                        // In large screens we may hit the bottom of the page and dont reach the top of the last magellan-destination, so lets force it
                        if (scrolltopPlusHeight >= $(self.scope).height() && lastDestinationTop > windowScrollTop && lastDestinationTop < scrolltopPlusHeight) {
                            $('[data-magellan-arrival]').last().trigger('arrival');
                        }
                    });
                });
            }

            this.settings.init = true;
        },

        set_threshold: function () {
            if (!this.settings.threshold) {
                this.settings.threshold = (this.fixed_magellan.length > 0) ?
                    this.outerHeight(this.fixed_magellan, true) : 0;
            }
        },

        off: function () {
            $(this.scope).off('.fndtn.magellan');
        }
    };
}(Foundation.zj, this, this.document));
;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs = Foundation.libs || {};

    Foundation.libs.orbit = {
        version: '4.0.0',

        settings: {
            timer_speed: 10000,
            animation_speed: 500,
            bullets: true,
            stack_on_small: true,
            container_class: 'orbit-container',
            stack_on_small_class: 'orbit-stack-on-small',
            next_class: 'orbit-next',
            prev_class: 'orbit-prev',
            timer_container_class: 'orbit-timer',
            timer_paused_class: 'paused',
            timer_progress_class: 'orbit-progress',
            slides_container_class: 'orbit-slides-container',
            bullets_container_class: 'orbit-bullets',
            bullets_active_class: 'active',
            slide_number_class: 'orbit-slide-number',
            caption_class: 'orbit-caption',
            active_slide_class: 'active',
            orbit_transition_class: 'orbit-transitioning'
        },

        init: function (scope, method, options) {
            var self = this;

            if (typeof method === 'object') {
                $.extend(true, self.settings, method);
            }

            $('[data-orbit]', scope).each($.proxy(self._init, self));
        },

        _container_html: function () {
            var self = this;
            return '<div class="' + self.settings.container_class + '"></div>';
        },

        _bullets_container_html: function ($slides) {
            var self = this,
                $list = $('<ol class="' + self.settings.bullets_container_class + '"></ol>');
            $slides.each(function (idx, slide) {
                var $item = $('<li data-orbit-slide-number="' + (idx + 1) + '" class=""></li>');
                if (idx === 0) {
                    $item.addClass(self.settings.bullets_active_class);
                }
                $list.append($item);
            });
            return $list;
        },

        _slide_number_html: function (slide_number, total_slides) {
            var self = this,
                $container = $('<div class="' + self.settings.slide_number_class + '"></div>');
            $container.append('<span>' + slide_number + '</span> of <span>' + total_slides + '</span>');
            return $container;
        },

        _timer_html: function () {
            var self = this;
            if (typeof self.settings.timer_speed === 'number' && self.settings.timer_speed > 0) {
                return '<div class="' + self.settings.timer_container_class
                    + '"><span></span><div class="' + self.settings.timer_progress_class
                    + '"></div></div>';
            } else {
                return '';
            }
        },

        _next_html: function () {
            var self = this;
            return '<a href="#" class="' + self.settings.next_class + '">Next <span></span></a>';
        },

        _prev_html: function () {
            var self = this;
            return '<a href="#" class="' + self.settings.prev_class + '">Prev <span></span></a>';
        },

        _init: function (idx, slider) {
            var self = this,
                $slides_container = $(slider),
                $container = $slides_container.wrap(self._container_html()).parent(),
                $slides = $slides_container.children();

            $container.append(self._prev_html());
            $container.append(self._next_html());
            $slides_container.addClass(self.settings.slides_container_class);
            if (self.settings.stack_on_small) {
                $container.addClass(self.settings.stack_on_small_class);
            }
            $container.append(self._slide_number_html(1, $slides.length));
            $container.append(self._timer_html());
            if (self.settings.bullets) {
                $container.after(self._bullets_container_html($slides));
            }
            // To better support the "sliding" effect it's easier
            // if we just clone the first and last slides
            $slides_container.append($slides.first().clone().attr('data-orbit-slide', ''));
            $slides_container.prepend($slides.last().clone().attr('data-orbit-slide', ''));
            // Make the first "real" slide active
            $slides_container.css('marginLeft', '-100%');
            $slides.first().addClass(self.settings.active_slide_class);

            self._init_events($slides_container);
            self._init_dimensions($slides_container);
            self._start_timer($slides_container);
        },

        _init_events: function ($slides_container) {
            var self = this,
                $container = $slides_container.parent();

            $(window)
                .on('load.fndtn.orbit', function () {
                    $slides_container.height('');
                    $slides_container.height($slides_container.height($container.height()));
                    $slides_container.trigger('orbit:ready');
                })
                .on('resize.fndtn.orbit', function () {
                    $slides_container.height('');
                    $slides_container.height($slides_container.height($container.height()));
                });

            $(document).on('click.fndtn.orbit', '[data-orbit-link]', function (e) {
                e.preventDefault();
                var id = $(e.currentTarget).attr('data-orbit-link'),
                    $slide = $slides_container.find('[data-orbit-slide=' + id + ']').first();

                if ($slide.length === 1) {
                    self._reset_timer($slides_container, true);
                    self.goto($slides_container, $slide.index(), function () {
                    });
                }
            });

            $container.siblings('.' + self.settings.bullets_container_class)
                .on('click.fndtn.orbit', '[data-orbit-slide-number]', function (e) {
                    e.preventDefault();
                    self._reset_timer($slides_container, true);
                    self.goto($slides_container, $(e.currentTarget).data('orbit-slide-number'), function () {
                    });
                });

            $container
                .on('orbit:after-slide-change.fndtn.orbit', function (e, orbit) {
                    var $slide_number = $container.find('.' + self.settings.slide_number_class);

                    if ($slide_number.length === 1) {
                        $slide_number.replaceWith(self._slide_number_html(orbit.slide_number, orbit.total_slides));
                    }
                })
                .on('orbit:next-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.next_class, function (e) {
                    e.preventDefault();
                    self._reset_timer($slides_container, true);
                    self.goto($slides_container, 'next', function () {
                    });
                })
                .on('orbit:prev-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.prev_class, function (e) {
                    e.preventDefault();
                    self._reset_timer($slides_container, true);
                    self.goto($slides_container, 'prev', function () {
                    });
                })
                .on('orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit', '.' + self.settings.timer_container_class, function (e) {
                    e.preventDefault();
                    var $timer = $(e.currentTarget).toggleClass(self.settings.timer_paused_class),
                        $slides_container = $timer.closest('.' + self.settings.container_class)
                            .find('.' + self.settings.slides_container_class);

                    if ($timer.hasClass(self.settings.timer_paused_class)) {
                        self._stop_timer($slides_container);
                    } else {
                        self._start_timer($slides_container);
                    }
                })
                .on('touchstart.fndtn.orbit', function (e) {
                    if (!e.touches) {
                        e = e.originalEvent;
                    }
                    var data = {
                        start_page_x: e.touches[0].pageX,
                        start_page_y: e.touches[0].pageY,
                        start_time: (new Date()).getTime(),
                        delta_x: 0,
                        is_scrolling: undefined
                    };
                    $container.data('swipe-transition', data);
                    e.stopPropagation();
                })
                .on('touchmove.fndtn.orbit', function (e) {
                    if (!e.touches) {
                        e = e.originalEvent;
                    }
                    // Ignore pinch/zoom events
                    if (e.touches.length > 1 || e.scale && e.scale !== 1) return;

                    var data = $container.data('swipe-transition');
                    if (typeof data === 'undefined') {
                        data = {};
                    }

                    data.delta_x = e.touches[0].pageX - data.start_page_x;

                    if (typeof data.is_scrolling === 'undefined') {
                        data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
                    }

                    if (!data.is_scrolling && !data.active) {
                        e.preventDefault();
                        self._stop_timer($slides_container);
                        var direction = (data.delta_x < 0) ? 'next' : 'prev';
                        data.active = true;
                        self.goto($slides_container, direction, function () {
                        });
                    }
                })
                .on('touchend.fndtn.orbit', function (e) {
                    $container.data('swipe-transition', {});
                    e.stopPropagation();
                });
        },

        _init_dimensions: function ($slides_container) {
            var $container = $slides_container.parent(),
                $slides = $slides_container.children();

            $slides_container.css('width', $slides.length * 100 + '%');
            $slides.css('width', 100 / $slides.length + '%');
            $slides_container.height($container.height());
            $slides_container.css('width', $slides.length * 100 + '%');
        },

        _start_timer: function ($slides_container) {
            var self = this,
                $container = $slides_container.parent();

            var callback = function () {
                self._reset_timer($slides_container, false);
                self.goto($slides_container, 'next', function () {
                    self._start_timer($slides_container);
                });
            };

            var $timer = $container.find('.' + self.settings.timer_container_class),
                $progress = $timer.find('.' + self.settings.timer_progress_class),
                progress_pct = ($progress.width() / $timer.width()),
                delay = self.settings.timer_speed - (progress_pct * self.settings.timer_speed);

            $progress.animate({'width': '100%'}, delay, 'linear', callback).data('is-original', 'beans?');
            $slides_container.trigger('orbit:timer-started');
        },

        _stop_timer: function ($slides_container) {
            var self = this,
                $container = $slides_container.parent(),
                $timer = $container.find('.' + self.settings.timer_container_class),
                $progress = $timer.find('.' + self.settings.timer_progress_class),
                progress_pct = $progress.width() / $timer.width()
            self._rebuild_timer($container, progress_pct * 100 + '%');
            // $progress.stop();
            $slides_container.trigger('orbit:timer-stopped');
            $timer = $container.find('.' + self.settings.timer_container_class);
            $timer.addClass(self.settings.timer_paused_class);
        },

        _reset_timer: function ($slides_container, is_paused) {
            var self = this,
                $container = $slides_container.parent();
            self._rebuild_timer($container, '0%');
            if (typeof is_paused === 'boolean' && is_paused) {
                var $timer = $container.find('.' + self.settings.timer_container_class);
                $timer.addClass(self.settings.timer_paused_class);
            }
        },

        _rebuild_timer: function ($container, width_pct) {
            // Zepto is unable to stop animations since they
            // are css-based. This is a workaround for that
            // limitation, which rebuilds the dom element
            // thus stopping the animation
            var self = this,
                $timer = $container.find('.' + self.settings.timer_container_class),
                $new_timer = $(self._timer_html()),
                $new_timer_progress = $new_timer.find('.' + self.settings.timer_progress_class);

            if (typeof Zepto === 'function') {
                $timer.remove();
                $container.append($new_timer);
                $new_timer_progress.css('width', width_pct);
            } else if (typeof jQuery === 'function') {
                var $progress = $timer.find('.' + self.settings.timer_progress_class);
                $progress.css('width', width_pct);
                $progress.stop();
            }
        },

        goto: function ($slides_container, index_or_direction, callback) {
            var self = this,
                $container = $slides_container.parent(),
                $slides = $slides_container.children(),
                $active_slide = $slides_container.find('.' + self.settings.active_slide_class),
                active_index = $active_slide.index();

            if ($container.hasClass(self.settings.orbit_transition_class)) {
                return false;
            }

            if (index_or_direction === 'prev') {
                if (active_index === 0) {
                    active_index = $slides.length - 1;
                }
                else {
                    active_index--;
                }
            }
            else if (index_or_direction === 'next') {
                active_index = (active_index + 1) % $slides.length;
            }
            else if (typeof index_or_direction === 'number') {
                active_index = (index_or_direction % $slides.length);
            }
            if (active_index === ($slides.length - 1) && index_or_direction === 'next') {
                $slides_container.css('marginLeft', '0%');
                active_index = 1;
            }
            else if (active_index === 0 && index_or_direction === 'prev') {
                $slides_container.css('marginLeft', '-' + ($slides.length - 1) * 100 + '%');
                active_index = $slides.length - 2;
            }
            // Start transition, make next slide active
            $container.addClass(self.settings.orbit_transition_class);
            $active_slide.removeClass(self.settings.active_slide_class);
            $($slides[active_index]).addClass(self.settings.active_slide_class);
            // Make next bullet active
            var $bullets = $container.siblings('.' + self.settings.bullets_container_class);
            if ($bullets.length === 1) {
                $bullets.children().removeClass(self.settings.bullets_active_class);
                $($bullets.children()[active_index - 1]).addClass(self.settings.bullets_active_class);
            }
            var new_margin_left = '-' + (active_index * 100) + '%';
            // Check to see if animation will occur, otherwise perform
            // callbacks manually
            $slides_container.trigger('orbit:before-slide-change');
            if ($slides_container.css('marginLeft') === new_margin_left) {
                $container.removeClass(self.settings.orbit_transition_class);
                $slides_container.trigger('orbit:after-slide-change', [{
                    slide_number: active_index,
                    total_slides: $slides_container.children().length - 2
                }]);
                callback();
            } else {
                $slides_container.animate({
                    'marginLeft': new_margin_left
                }, self.settings.animation_speed, 'linear', function () {
                    $container.removeClass(self.settings.orbit_transition_class);
                    $slides_container.trigger('orbit:after-slide-change', [{
                        slide_number: active_index,
                        total_slides: $slides_container.children().length - 2
                    }]);
                    callback();
                });
            }
        }
    };
}(Foundation.zj, this, this.document));
/*! http://mths.be/placeholder v2.0.7 by @mathias 
 Modified to work with Zepto.js by ZURB
 */

;
(function (window, document, $) {

    var isInputSupported = 'placeholder' in document.createElement('input'),
        isTextareaSupported = 'placeholder' in document.createElement('textarea'),
        prototype = $.fn,
        valHooks = $.valHooks,
        hooks,
        placeholder;

    if (isInputSupported && isTextareaSupported) {

        placeholder = prototype.placeholder = function () {
            return this;
        };

        placeholder.input = placeholder.textarea = true;

    } else {

        placeholder = prototype.placeholder = function () {
            var $this = this;
            $this
                .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
                .not('.placeholder')
                .bind({
                    'focus.placeholder': clearPlaceholder,
                    'blur.placeholder': setPlaceholder
                })
                .data('placeholder-enabled', true)
                .trigger('blur.placeholder');
            return $this;
        };

        placeholder.input = isInputSupported;
        placeholder.textarea = isTextareaSupported;

        hooks = {
            'get': function (element) {
                var $element = $(element);
                return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
            },
            'set': function (element, value) {
                var $element = $(element);
                if (!$element.data('placeholder-enabled')) {
                    return element.value = value;
                }
                if (value == '') {
                    element.value = value;
                    // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
                    if (element != document.activeElement) {
                        // We can't use `triggerHandler` here because of dummy text/password inputs :(
                        setPlaceholder.call(element);
                    }
                } else if ($element.hasClass('placeholder')) {
                    clearPlaceholder.call(element, true, value) || (element.value = value);
                } else {
                    element.value = value;
                }
                // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
                return $element;
            }
        };

        isInputSupported || (valHooks.input = hooks);
        isTextareaSupported || (valHooks.textarea = hooks);

        $(function () {
            // Look for forms
            $(document).delegate('form', 'submit.placeholder', function () {
                // Clear the placeholder values so they don't get submitted
                var $inputs = $('.placeholder', this).each(clearPlaceholder);
                setTimeout(function () {
                    $inputs.each(setPlaceholder);
                }, 10);
            });
        });

        // Clear placeholder values upon page reload
        $(window).bind('beforeunload.placeholder', function () {
            $('.placeholder').each(function () {
                this.value = '';
            });
        });

    }

    function args(elem) {
        // Return an object of element attributes
        var newAttrs = {},
            rinlinejQuery = /^jQuery\d+$/;
        $.each(elem.attributes, function (i, attr) {
            if (attr.specified && !rinlinejQuery.test(attr.name)) {
                newAttrs[attr.name] = attr.value;
            }
        });
        return newAttrs;
    }

    function clearPlaceholder(event, value) {
        var input = this,
            $input = $(input);
        if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
            if ($input.data('placeholder-password')) {
                $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
                // If `clearPlaceholder` was called from `$.valHooks.input.set`
                if (event === true) {
                    return $input[0].value = value;
                }
                $input.focus();
            } else {
                input.value = '';
                $input.removeClass('placeholder');
                input == document.activeElement && input.select();
            }
        }
    }

    function setPlaceholder() {
        var $replacement,
            input = this,
            $input = $(input),
            $origInput = $input,
            id = this.id;
        if (input.value == '') {
            if (input.type == 'password') {
                if (!$input.data('placeholder-textinput')) {
                    try {
                        $replacement = $input.clone().attr({'type': 'text'});
                    } catch (e) {
                        $replacement = $('<input>').attr($.extend(args(this), {'type': 'text'}));
                    }
                    $replacement
                        .removeAttr('name')
                        .data({
                            'placeholder-password': true,
                            'placeholder-id': id
                        })
                        .bind('focus.placeholder', clearPlaceholder);
                    $input
                        .data({
                            'placeholder-textinput': $replacement,
                            'placeholder-id': id
                        })
                        .before($replacement);
                }
                $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
                // Note: `$input[0] != input` now!
            }
            $input.addClass('placeholder');
            $input[0].value = $input.attr('placeholder');
        } else {
            $input.removeClass('placeholder');
        }
    }

}(this, document, Foundation.zj));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.reveal = {
        name: 'reveal',

        version: '4.0.4',

        locked: false,

        settings: {
            animation: 'fadeAndPop',
            animationSpeed: 250,
            closeOnBackgroundClick: true,
            dismissModalClass: 'close-reveal-modal',
            bgClass: 'reveal-modal-bg',
            open: function () {
            },
            opened: function () {
            },
            close: function () {
            },
            closed: function () {
            },
            bg: $('.reveal-modal-bg'),
            css: {
                open: {
                    'opacity': 0,
                    'visibility': 'visible',
                    'display': 'block'
                },
                close: {
                    'opacity': 1,
                    'visibility': 'hidden',
                    'display': 'none'
                }
            }
        },

        init: function (scope, method, options) {
            this.scope = scope || this.scope;
            Foundation.inherit(this, 'data_options delay');

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                if (!this.settings.init) this.events();

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;

            $(this.scope)
                .on('click.fndtn.reveal', '[data-reveal-id]', function (e) {
                    e.preventDefault();
                    if (!self.locked) {
                        self.locked = true;
                        self.open.call(self, $(this));
                    }
                })
                .on('click.fndtn.reveal touchend.click.fndtn.reveal', this.close_targets(), function (e) {
                    if (!self.locked) {
                        self.locked = true;
                        self.close.call(self, $(this).closest('.reveal-modal'));
                    }
                })
                .on('open.fndtn.reveal', '.reveal-modal', this.settings.open)
                .on('opened.fndtn.reveal', '.reveal-modal', this.settings.opened)
                .on('opened.fndtn.reveal', '.reveal-modal', this.open_video)
                .on('close.fndtn.reveal', '.reveal-modal', this.settings.close)
                .on('closed.fndtn.reveal', '.reveal-modal', this.settings.closed)
                .on('closed.fndtn.reveal', '.reveal-modal', this.close_video);
        },

        open: function (target) {
            if (target) {
                var modal = $('#' + target.data('reveal-id'));
            } else {
                var modal = $(this.scope);
            }

            var open_modal = $('.reveal-modal.open');

            if (!modal.data('css-top')) {
                modal.data('css-top', parseInt(modal.css('top'), 10))
                    .data('offset', this.cache_offset(modal));
            }

            modal.trigger('open');

            if (open_modal.length < 1) {
                this.toggle_bg(modal);
            }

            this.toggle_modals(open_modal, modal);
        },

        close: function (modal) {
            var modal = modal || $(this.scope);
            this.locked = true;
            var open_modal = $('.reveal-modal.open').not(modal);
            modal.trigger('close');
            this.toggle_bg(modal);
            this.toggle_modals(open_modal, modal);
        },

        close_targets: function () {
            var base = '.' + this.settings.dismissModalClass;

            if (this.settings.closeOnBackgroundClick) {
                return base + ', .' + this.settings.bgClass;
            }

            return base;
        },

        toggle_modals: function (open_modal, modal) {
            if (open_modal.length > 0) {
                this.hide(open_modal, this.settings.css.close);
            }

            if (modal.filter(':visible').length > 0) {
                this.hide(modal, this.settings.css.close);
            } else {
                this.show(modal, this.settings.css.open);
            }
        },

        toggle_bg: function (modal) {
            if (this.settings.bg.length === 0) {
                this.settings.bg = $('<div />', {'class': this.settings.bgClass})
                    .insertAfter(modal);
            }

            if (this.settings.bg.filter(':visible').length > 0) {
                this.hide(this.settings.bg);
            } else {
                this.show(this.settings.bg);
            }
        },

        show: function (el, css) {
            // is modal
            if (css) {
                if (/pop/i.test(this.settings.animation)) {
                    css.top = $(window).scrollTop() - el.data('offset') + 'px';
                    var end_css = {
                        top: $(window).scrollTop() + el.data('css-top') + 'px',
                        opacity: 1
                    }

                    return this.delay(function () {
                        return el
                            .css(css)
                            .animate(end_css, this.settings.animationSpeed, 'linear', function () {
                                this.locked = false;
                                el.trigger('opened');
                            }.bind(this))
                            .addClass('open');
                    }.bind(this), this.settings.animationSpeed / 2);
                }

                if (/fade/i.test(this.settings.animation)) {
                    var end_css = {opacity: 1};

                    return this.delay(function () {
                        return el
                            .css(css)
                            .animate(end_css, this.settings.animationSpeed, 'linear', function () {
                                this.locked = false;
                                el.trigger('opened');
                            }.bind(this))
                            .addClass('open');
                    }.bind(this), this.settings.animationSpeed / 2);
                }

                return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened');
            }

            // should we animate the background?
            if (/fade/i.test(this.settings.animation)) {
                return el.fadeIn(this.settings.animationSpeed / 2);
            }

            return el.show();
        },

        hide: function (el, css) {
            // is modal
            if (css) {
                if (/pop/i.test(this.settings.animation)) {
                    var end_css = {
                        top: -$(window).scrollTop() - el.data('offset') + 'px',
                        opacity: 0
                    };

                    return this.delay(function () {
                        return el
                            .animate(end_css, this.settings.animationSpeed, 'linear', function () {
                                this.locked = false;
                                el.css(css).trigger('closed');
                            }.bind(this))
                            .removeClass('open');
                    }.bind(this), this.settings.animationSpeed / 2);
                }

                if (/fade/i.test(this.settings.animation)) {
                    var end_css = {opacity: 0};

                    return this.delay(function () {
                        return el
                            .animate(end_css, this.settings.animationSpeed, 'linear', function () {
                                this.locked = false;
                                el.css(css).trigger('closed');
                            }.bind(this))
                            .removeClass('open');
                    }.bind(this), this.settings.animationSpeed / 2);
                }

                return el.hide().css(css).removeClass('open').trigger('closed');
            }

            // should we animate the background?
            if (/fade/i.test(this.settings.animation)) {
                return el.fadeOut(this.settings.animationSpeed / 2);
            }

            return el.hide();
        },

        close_video: function (e) {
            var video = $(this).find('.flex-video'),
                iframe = video.find('iframe');

            if (iframe.length > 0) {
                iframe.attr('data-src', iframe[0].src);
                iframe.attr('src', 'about:blank');
                video.fadeOut(100).hide();
            }
        },

        open_video: function (e) {
            var video = $(this).find('.flex-video'),
                iframe = video.find('iframe');

            if (iframe.length > 0) {
                var data_src = iframe.attr('data-src');
                if (typeof data_src === 'string') {
                    iframe[0].src = iframe.attr('data-src');
                }
                video.show().fadeIn(100);
            }
        },

        cache_offset: function (modal) {
            var offset = modal.show().height() + parseInt(modal.css('top'), 10);

            modal.hide();

            return offset;
        },

        off: function () {
            $(this.scope).off('.fndtn.reveal');
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.section = {
        name: 'section',

        version: '4.0.5',

        settings: {
            deep_linking: false,
            one_up: true,
            callback: function () {
            }
        },

        init: function (scope, method, options) {
            this.scope = scope || this.scope;
            Foundation.inherit(this, 'throttle data_options');

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                this.set_active_from_hash();
                if (!this.settings.init) this.events();

                return this.settings.init;
            } else {
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;
            $(this.scope).on('click.fndtn.section', '[data-section] .title', function (e) {
                $.extend(true, self.settings, self.data_options($(this).closest('[data-section]')));
                self.toggle_active.call(this, e, self);
            });

            $(window).on('resize.fndtn.section', self.throttle(function () {
                self.resize.call(this);
            }, 30)).trigger('resize');

            $('[data-section] .content').on('click.fndtn.section', function (e) {
                e.stopPropagation();
            });

            $('*, html, body').on('click.fndtn.section', function (e) {
                if ($(e.target).closest('.title').length < 1) {
                    $('[data-section].vertical-nav, [data-section].horizontal-nav')
                        .find('section, .section')
                        .removeClass('active')
                        .attr('style', '');
                }
            });

            this.settings.init = true;
        },

        toggle_active: function (e, self) {
            var $this = $(this),
                section = $this.closest('section, .section'),
                content = section.find('.content'),
                parent = section.closest('[data-section]'),
                self = Foundation.libs.section;

            if (!self.settings.deep_linking && content.length > 0) {
                e.preventDefault();
            }

            if (section.hasClass('active')) {
                if (self.small(parent)
                    || self.is_vertical(parent)
                    || self.is_horizontal(parent)
                    || self.is_accordion(parent)) {
                    section
                        .removeClass('active')
                        .attr('style', '');
                }
            } else {
                if (self.small(parent) || self.settings.one_up) {
                    $this
                        .closest('[data-section]')
                        .find('section, .section')
                        .removeClass('active')
                        .attr('style', '');

                    section.css('padding-top', self.outerHeight(section.find('.title')));
                }

                $('[data-section].vertical-nav, [data-section].horizontal-nav')
                    .find('section, .section')
                    .removeClass('active')
                    .attr('style', '');

                if (self.small(parent)) {
                    section.attr('style', '');
                }

                section.addClass('active');
            }

            self.settings.callback();
        },

        resize: function () {
            var sections = $('[data-section]'),
                self = Foundation.libs.section;

            sections.each(function () {
                var $this = $(this),
                    active_section = $this.find('section.active, .section.active');
                if (active_section.length > 1) {
                    active_section
                        .not(':first')
                        .removeClass('active')
                        .attr('style', '');
                } else if (active_section.length < 1
                    && !self.is_vertical($this)
                    && !self.is_horizontal($this)
                    && !self.is_accordion($this)) {
                    var first = $this.find('section, .section').first();
                    first.addClass('active');

                    if (self.small($this)) {
                        first.attr('style', '');
                    } else {
                        first.css('padding-top', self.outerHeight(first.find('.title')));
                    }
                }

                if (self.small($this)) {
                    active_section.attr('style', '');
                } else {
                    active_section.css('padding-top', self.outerHeight(active_section.find('.title')));
                }
                self.position_titles($this);

                if (self.is_horizontal($this) && !self.small($this)) {
                    self.position_content($this);
                } else {
                    self.position_content($this, false);
                }
            });
        },

        is_vertical: function (el) {
            return el.hasClass('vertical-nav');
        },

        is_horizontal: function (el) {
            return el.hasClass('horizontal-nav');
        },

        is_accordion: function (el) {
            return el.hasClass('accordion');
        },

        set_active_from_hash: function () {
            var hash = window.location.hash.substring(1),
                sections = $('[data-section]'),
                self = this;

            sections.each(function () {
                var section = $(this);
                $.extend(true, self.settings, self.data_options(section));

                if (hash.length > 0 && self.settings.deep_linking) {
                    section
                        .find('.content[data-slug="' + hash + '"]')
                        .closest('section, .section')
                        .addClass('active');
                }
            });
        },

        position_titles: function (section, off) {
            var titles = section.find('.title'),
                previous_width = 0,
                self = this;

            if (typeof off === 'boolean') {
                titles.attr('style', '');

            } else {
                titles.each(function () {
                    $(this).css('left', previous_width);
                    previous_width += self.outerWidth($(this));
                });
            }
        },

        position_content: function (section, off) {
            var titles = section.find('.title'),
                content = section.find('.content'),
                self = this;

            if (typeof off === 'boolean') {
                content.attr('style', '');
                section.attr('style', '');
            } else {
                section.find('section, .section').each(function () {
                    var title = $(this).find('.title'),
                        content = $(this).find('.content');

                    content.css({left: title.position().left - 1, top: self.outerHeight(title) - 2});
                });

                // temporary work around for Zepto outerheight calculation issues.
                if (typeof Zepto === 'function') {
                    section.height(this.outerHeight(titles.first()));
                } else {
                    section.height(this.outerHeight(titles.first()) - 2);
                }
            }

        },

        small: function (el) {
            if (el && this.is_accordion(el)) {
                return true;
            }
            if ($('html').hasClass('lt-ie9')) {
                return true;
            }
            if ($('html').hasClass('ie8compat')) {
                return true;
            }
            return $(this.scope).width() < 768;
        },

        off: function () {
            $(this.scope).off('.fndtn.section');
            $(window).off('.fndtn.section');
            this.settings.init = false;
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.tooltips = {
        name: 'tooltips',

        version: '4.0.2',

        settings: {
            selector: '.has-tip',
            additionalInheritableClasses: [],
            tooltipClass: '.tooltip',
            tipTemplate: function (selector, content) {
                return '<span data-selector="' + selector + '" class="'
                    + Foundation.libs.tooltips.settings.tooltipClass.substring(1)
                    + '">' + content + '<span class="nub"></span></span>';
            }
        },

        cache: {},

        init: function (scope, method, options) {
            var self = this;
            this.scope = scope || this.scope;

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {
                if (Modernizr.touch) {
                    $(this.scope)
                        .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip',
                        '[data-tooltip]', function (e) {
                            e.preventDefault();
                            $(self.settings.tooltipClass).hide();
                            self.showOrCreateTip($(this));
                        })
                        .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip',
                        this.settings.tooltipClass, function (e) {
                            e.preventDefault();
                            $(this).fadeOut(150);
                        });
                } else {
                    $(this.scope)
                        .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip',
                        '[data-tooltip]', function (e) {
                            var $this = $(this);

                            if (e.type === 'mouseover' || e.type === 'mouseenter') {
                                self.showOrCreateTip($this);
                            } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
                                self.hide($this);
                            }
                        });
                }

                // $(this.scope).data('fndtn-tooltips', true);
            } else {
                return this[method].call(this, options);
            }

        },

        showOrCreateTip: function ($target) {
            var $tip = this.getTip($target);

            if ($tip && $tip.length > 0) {
                return this.show($target);
            }

            return this.create($target);
        },

        getTip: function ($target) {
            var selector = this.selector($target),
                tip = null;

            if (selector) {
                tip = $('span[data-selector=' + selector + ']' + this.settings.tooltipClass);
            }

            return (typeof tip === 'object') ? tip : false;
        },

        selector: function ($target) {
            var id = $target.attr('id'),
                dataSelector = $target.attr('data-tooltip') || $target.attr('data-selector');

            if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
                dataSelector = 'tooltip' + Math.random().toString(36).substring(7);
                $target.attr('data-selector', dataSelector);
            }

            return (id && id.length > 0) ? id : dataSelector;
        },

        create: function ($target) {
            var $tip = $(this.settings.tipTemplate(this.selector($target), $('<div>').html($target.attr('title')).html())),
                classes = this.inheritable_classes($target);

            $tip.addClass(classes).appendTo('body');
            if (Modernizr.touch) {
                $tip.append('<span class="tap-to-close">tap to close </span>');
            }
            $target.removeAttr('title').attr('title', '');
            this.show($target);
        },

        reposition: function (target, tip, classes) {
            var width, nub, nubHeight, nubWidth, column, objPos;

            tip.css('visibility', 'hidden').show();

            width = target.data('width');
            nub = tip.children('.nub');
            nubHeight = this.outerHeight(nub);
            nubWidth = this.outerHeight(nub);

            objPos = function (obj, top, right, bottom, left, width) {
                return obj.css({
                    'top': (top) ? top : 'auto',
                    'bottom': (bottom) ? bottom : 'auto',
                    'left': (left) ? left : 'auto',
                    'right': (right) ? right : 'auto',
                    'width': (width) ? width : 'auto'
                }).end();
            };

            objPos(tip, (target.col - md - offset - ().top + this.outerHeight(target) + 10), 'auto', 'auto', target.col - md - offset - ().left, width);

            if ($(window).width() < 767) {
                objPos(tip, (target.col - md - offset - ().top + this.outerHeight(target) + 10), 'auto', 'auto', 12.5, $(this.scope).width());
                tip.addClass('tip-override');
                objPos(nub, -nubHeight, 'auto', 'auto', target.col - md - offset - ().left);
            } else {
                objPos(tip, (target.col - md - offset - ().top + this.outerHeight(target) + 10), 'auto', 'auto', target.col - md - offset - ().left, width);
                tip.removeClass('tip-override');
                if (classes && classes.indexOf('tip-top') > -1) {
                    objPos(tip, (target.col - md - offset - ().top - this.outerHeight(tip)), 'auto', 'auto', target.col - md - offset - ().left, width)
                        .removeClass('tip-override');
                } else if (classes && classes.indexOf('tip-left') > -1) {
                    objPos(tip, (target.col - md - offset - ().top + (this.outerHeight(target) / 2) - nubHeight * 2.5), 'auto', 'auto', (target.col - md - offset - ().left - this.outerWidth(tip) - nubHeight), width)
                        .removeClass('tip-override');
                } else if (classes && classes.indexOf('tip-right') > -1) {
                    objPos(tip, (target.col - md - offset - ().top + (this.outerHeight(target) / 2) - nubHeight * 2.5), 'auto', 'auto', (target.col - md - offset - ().left + this.outerWidth(target) + nubHeight), width)
                        .removeClass('tip-override');
                }
            }

            tip.css('visibility', 'visible').hide();
        },

        inheritable_classes: function (target) {
            var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'].concat(this.settings.additionalInheritableClasses),
                classes = target.attr('class'),
                filtered = classes ? $.map(classes.split(' '), function (el, i) {
                    if ($.inArray(el, inheritables) !== -1) {
                        return el;
                    }
                }).join(' ') : '';

            return $.trim(filtered);
        },

        show: function ($target) {
            var $tip = this.getTip($target);

            this.reposition($target, $tip, $target.attr('class'));
            $tip.fadeIn(150);
        },

        hide: function ($target) {
            var $tip = this.getTip($target);

            $tip.fadeOut(150);
        },

        // deprecate reload
        reload: function () {
            var $self = $(this);

            return ($self.data('fndtn-tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init');
        },

        off: function () {
            $(this.scope).off('.fndtn.tooltip');
            $(this.settings.tooltipClass).each(function (i) {
                $('[data-tooltip]').get(i).attr('title', $(this).text());
            }).remove();
        }
    };
}(Foundation.zj, this, this.document));
/*jslint unparam: true, browser: true, indent: 2 */


;
(function ($, window, document, undefined) {
    'use strict';

    Foundation.libs.topbar = {
        name: 'topbar',

        version: '4.0.0',

        settings: {
            index: 0,
            stickyClass: 'sticky',
            custom_back_text: true,
            back_text: 'Back',
            init: false
        },

        init: function (scope, method, options) {
            var self = this;
            this.scope = scope || this.scope;

            if (typeof method === 'object') {
                $.extend(true, this.settings, method);
            }

            if (typeof method != 'string') {

                $('nav.top-bar').each(function () {
                    self.settings.$w = $(window);
                    self.settings.$topbar = $(this);
                    self.settings.$section = self.settings.$topbar.find('section');
                    self.settings.$titlebar = self.settings.$topbar.children('ul').first();


                    self.settings.$topbar.data('index', 0);

                    var breakpoint = $("<div class='top-bar-js-breakpoint'/>").insertAfter(self.settings.$topbar);
                    self.settings.breakPoint = breakpoint.width();
                    breakpoint.remove();

                    self.assemble();

                    if (self.settings.$topbar.parent().hasClass('fixed')) {
                        $('body').css('padding-top', self.outerHeight(self.settings.$topbar));
                    }
                });

                if (!self.settings.init) {
                    this.events();
                }

                return this.settings.init;
            } else {
                // fire method
                return this[method].call(this, options);
            }
        },

        events: function () {
            var self = this;

            $(this.scope)
                .on('click.fndtn.topbar', '.top-bar .toggle-topbar', function (e) {
                    var topbar = $(this).closest('.top-bar'),
                        section = topbar.find('section, .section'),
                        titlebar = topbar.children('ul').first();

                    if (!self.settings.$topbar.data('height')) self.largestUL();

                    e.preventDefault();

                    if (self.breakpoint()) {
                        topbar
                            .toggleClass('expanded')
                            .css('min-height', '');
                    }

                    if (!topbar.hasClass('expanded')) {
                        section.css({left: '0%'});
                        section.find('>.name').css({left: '100%'});
                        section.find('li.moved').removeClass('moved');
                        topbar.data('index', 0);
                    }
                })

                .on('click.fndtn.topbar', '.top-bar .has-dropdown>a', function (e) {
                    var topbar = $(this).closest('.top-bar'),
                        section = topbar.find('section, .section'),
                        titlebar = topbar.children('ul').first();

                    if (Modernizr.touch || self.breakpoint()) {
                        e.preventDefault();
                    }

                    if (self.breakpoint()) {
                        var $this = $(this),
                            $selectedLi = $this.closest('li');

                        topbar.data('index', topbar.data('index') + 1);
                        $selectedLi.addClass('moved');
                        section.css({left: -(100 * topbar.data('index')) + '%'});
                        section.find('>.name').css({left: 100 * topbar.data('index') + '%'});

                        $this.siblings('ul')
                            .height(topbar.data('height') + self.outerHeight(titlebar, true));
                        topbar
                            .css('min-height', topbar.data('height') + self.outerHeight(titlebar, true) * 2)
                    }
                });

            $(window).on('resize.fndtn.topbar', function () {
                if (!this.breakpoint()) {
                    $('.top-bar').css('min-height', '');
                }
            }.bind(this));

            // Go up a level on Click
            $(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back', function (e) {
                e.preventDefault();

                var $this = $(this),
                    topbar = $this.closest('.top-bar'),
                    section = topbar.find('section, .section'),
                    $movedLi = $this.closest('li.moved'),
                    $previousLevelUl = $movedLi.parent();

                topbar.data('index', topbar.data('index') - 1);
                section.css({left: -(100 * topbar.data('index')) + '%'});
                section.find('>.name').css({'left': 100 * topbar.data('index') + '%'});

                if (topbar.data('index') === 0) {
                    topbar.css('min-height', 0);
                }

                setTimeout(function () {
                    $movedLi.removeClass('moved');
                }, 300);
            });
        },

        breakpoint: function () {
            return $(window).width() <= this.settings.breakPoint || $('html').hasClass('lt-ie9');
        },

        assemble: function () {
            var self = this;
            // Pull element out of the DOM for manipulation
            this.settings.$section.detach();

            this.settings.$section.find('.has-dropdown>a').each(function () {
                var $link = $(this),
                    $dropdown = $link.siblings('.dropdown'),
                    $titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');

                // Copy link to subnav
                if (self.settings.custom_back_text == true) {
                    $titleLi.find('h5>a').html('&laquo; ' + self.settings.back_text);
                } else {
                    $titleLi.find('h5>a').html('&laquo; ' + $link.html());
                }
                $dropdown.prepend($titleLi);
            });

            // Put element back in the DOM
            this.settings.$section.appendTo(this.settings.$topbar);

            // check for sticky
            this.sticky();
        },

        largestUL: function () {
            var uls = this.settings.$topbar.find('section ul ul'),
                largest = uls.first(),
                total = 0,
                self = this;

            uls.each(function () {
                if ($(this).children('li').length > largest.children('li').length) {
                    largest = $(this);
                }
            });

            largest.children('li').each(function () {
                total += self.outerHeight($(this), true);
            });

            this.settings.$topbar.data('height', total);
        },

        sticky: function () {
            var klass = '.' + this.settings.stickyClass;
            if ($(klass).length > 0) {
                var distance = $(klass).length ? $(klass).col - md - offset - ().top : 0,
                    $window = $(window);
                var offst = this.outerHeight($('nav.top-bar')) + 20;

                $window.scroll(function () {
                    if ($window.scrollTop() >= (distance)) {
                        $(klass).addClass("fixed");
                        $('body').css('padding-top', offst);
                    }

                    else if ($window.scrollTop() < distance) {
                        $(klass).removeClass("fixed");
                        $('body').css('padding-top', '0');
                    }
                });
            }
        },

        off: function () {
            $(this.scope).off('.fndtn.topbar');
            $(window).off('.fndtn.topbar');
        }
    };
}(Foundation.zj, this, this.document));
/*














 */
;
/*

 */
;
